package br.com.lm.filter;

import br.com.lm.geral.util.MessageProvider;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;

/**
 * @author Robson Motta
 */
@SuppressWarnings("StaticNonFinalUsedInInitialization")
public class QuestionarioSenhaConverter implements Converter {

    public List<QuestionarioSenha> questionarioSenhaDB;
    
    //Nota: Caso não necessite de I18N pode deixar a List questionarioSenhaDB com atributo static
    //      E trocar este o contrutor pela sentença de execução static {...}
    //      Obs: O bean QuestionarioSenhaBean usa a lista questionarioSenhaDB
        
    public QuestionarioSenhaConverter() {
        MessageProvider msgI18N = new MessageProvider("msgLogin");
        questionarioSenhaDB = new ArrayList<QuestionarioSenha>();
        questionarioSenhaDB.add(new QuestionarioSenha("pet_preferido.jpg",1, msgI18N.getValueFromKey("I209"), msgI18N.getValueFromKey("I210")));
        questionarioSenhaDB.add(new QuestionarioSenha("microphone.jpg", 2, msgI18N.getValueFromKey("I211"), msgI18N.getValueFromKey("I212")));
        questionarioSenhaDB.add(new QuestionarioSenha("cheff.jpg", 3, msgI18N.getValueFromKey("I213"), msgI18N.getValueFromKey("I214")));
        questionarioSenhaDB.add(new QuestionarioSenha("viagem.jpg", 4, msgI18N.getValueFromKey("I215"), msgI18N.getValueFromKey("I216")));
        questionarioSenhaDB.add(new QuestionarioSenha("rings.jpg", 5, msgI18N.getValueFromKey("I217"), msgI18N.getValueFromKey("I218")));
        questionarioSenhaDB.add(new QuestionarioSenha("maqfotograf.jpg", 6, msgI18N.getValueFromKey("I219"), msgI18N.getValueFromKey("I220")));        
    }
        
    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String submittedValue) {
        if (submittedValue == null || submittedValue.trim().equals("")) {
            return null;
        } 
        else {
            try {
                //retorna a classe para chave selectItems
                int number = Integer.parseInt(submittedValue);
                for (QuestionarioSenha q : questionarioSenhaDB) {
                    if (q.getNrPergunta() == number) {
                        return q;
                    }
                }
            } 
            catch(NumberFormatException exception) {
                throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error(QuestionarioSenha)", exception.getLocalizedMessage()));
            }
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object value) {
        //Retorna chave para selecao selectItems
        if (value == null || !(value instanceof QuestionarioSenha)) {
            return "";
        } else {
            return String.valueOf(((QuestionarioSenha)value).getNrPergunta());
        }
    }
}